Міністерство освіти та науки України
НУ «Львівська політехніка»
Звіт
Лабораторна робота №3
На тему : “ Базові типи даних. Логічні операції, умовна операція. Виведення дійсних чисел у різному форматі з допомогою стандартної функції мови С. Явне та неявне перетворення типів. ”
Львів 2007
Тема: Базові типи даних. Логічні операції, умовна операція. Виведення дійсних чисел у різному форматі з допомогою стандартної функції мови С. Явне та неявне перетворення типів
Мета: Навчитися задавати дані різного типу та освоїти операції мови С для арифметичних, логічних обчислень та задання умов.
Теоретичні відомості
С підтримує такі порозрядні логічні операції:
& порозрядне логічне І (AND) ;
^ порозрядне додавання по модулю 2 (XOR - виключаюче АБО);
| порозрядне логічне АБО (OR) ;
~ порозрядна інверсія.
Мова С передбачає дві операції порозрядного зсуву:
<< - зсув вліво операнда зліва від знака операції на число двійкових розрядів справа від знака операції;
>> - зсув вправо операнда зліва від знака операції на число двійкових розрядів справа від знака операції.
Завдання
Написати програму, яка виконує таку послідовність дій:
для введеного дійсного числа друкує окремо цілу та дробову частину;
друкує число у формах
/D.ddd/
/D.d /
/d.dde<знак>dd/
/D./
/<знак>D.d/
/d.ddddE<знак>dd/
/D.dddddd/
/0..0D.dd/ (друкує 2 цифри після коми, при вирівнюванні до довжини вивідного поля 6, доповнюючи при потребі нулем)
/ D.dd/ (друкує 2 цифри після коми, при вирівнюванні до довжини вивідного поля 8, доповнюючи при потребі пробілом)
Тут через d позначено одну десяткову цифру, D – одну або більше десяткових цифр.
3) для цілої частини цього числа друкує n-ту цифру з кінця (3)
4) для цілої частини здійснює обчислення з допомогою операцій зсуву
(/4, *8)
та друкує результат цих дій;
5) для введеного символу (через функції Ф) друкує код цього символу;
6) використовуючи умовну операцію для одного з наступних варіантів:
виводить результат перевірки чи найближче до введеногго числа є парним числом
Текст програми:
#include<stdio.h>
#include<conio.h>
#include <math.h>
void main(void)
{float a,s1,s2,a2,g;int a1,chuslo,pos,chf,tyk;
char c;
clrscr();
puts(" PRODUCE BY MAKSIMETS ANDRIY KN-116");
puts("****************************************************************");
printf("Vvedit chuslo\n\r");
scanf("%f",&a);
a1=(int)a;
a2=a-a1;
printf("Vuvid drobovvoi chastunu chisla %f \n\r ",a2);
printf("Vuvid ciloi chastunu chusala %d\n\r ",a1);
printf("Vuvid chusla y formati /D.ddd/ --%.3f\n\r",a);
printf("Vuvid chusla y formati /D.d /--%.1f\n\r",a);
printf("Vuvid chusla y formati /d.dde<znak>dd/--%0.2e\n\r",a);
printf("Vuvid chusla y formati /D./--%0.0f.\n\r",a);
printf("Vuvid chusla y formati /<znak>D.d/--%+0.1f\n\r",a);
printf("Vuvid chusla y formati /d.ddddE<znak>dd--%0.4E\n\r",a);
printf("Vuvid chusla y formati /D.dddddd/--%0.6f\n\r",a);
printf("Vuvid chusla y formati /0..0D.dd/--%06.2f\n\r",a);
printf("Vuvid chusla y formati /D.dd/--%8.2f\n\r",a);
puts("*****************************************************************");
printf("Pislia operazii (/32) %d\n", (int)a>>5);
printf("Pislia operazii (*4) %d\n",(int)a<<2);
puts("*****************************************************************");
puts("Vvedit nomer zyfri z kincia chusla");
scanf("%d",&pos);
tyk=(int)a/pow(10,pos-1);
chf=(int)tyk%10;
printf("%d-ta zyfra z kincia %d\n",pos,chf);
puts("*****************************************************************");
getchar();
printf("\nVvedit sumvol\n");
scanf("%c",&c);
printf("\nKod sumvolu %c - %d\n\n\n",c,c);
puts("*****************************************************************");
puts("Vvedit dva diysni chusla");
scanf("%f",&s1);
scanf("%f",&s2);
g=(s1>s2)? s1:s2;
chuslo=(int)((g-(int)g)*10);
if(chuslo % 2!=0)
puts("Neparne");
else puts("Parne");
puts("*****************************************************************");
getch();
}
Протокол роботи програми:
Висновок: я навчився задавати дані різного типу та освоїти операції...